#ifndef MAINWINDOW_P_H
#define MAINWINDOW_P_H

#include "dptr.h"
#include <QPushButton>
#include <QLineEdit>
#include <QAction>
#include <QMenuBar>
#include <QToolBar>
#include <QMenu>
#include <QMdiArea>
//#include "mdichild.h"

class MainWindow;
class MainWindowPrivate : public DPtrPrivate<MainWindow>
{
    DPTR_DECLARE_PUBLIC(MainWindow)

public:

    MainWindowPrivate();
    ~MainWindowPrivate();

    void createFileMenuActions_helper();
    void createEditMenuActions_helper();
    void createConnectionMenuActions_helper();

    void createToolMenuActions_helper();
    void createToolMenuActions_test_helper();
    void createToolMenuActions_hplc_helper();
    void createToolMenuActions_electronicscale_helper();
    void createToolMenuActions_simplefoc_helper();

    void createWindowMenuActions_helper();
    void createHelpMenuActions_helper();

    // Mdi
    enum { MaxRecentFiles = 5 };

    QMdiArea *mdiArea;

    // file menu
    QMenu *fileMenu;
    QToolBar *fileToolBar;
    QMenu *recentMenu;
    QAction *newAct;
    QAction *openAct;
    QAction *saveAct;
    QAction *saveAsAct;
    QAction *recentFileActs[MaxRecentFiles];
    QAction *recentFileSeparator;
    QAction *recentFileSubMenuAct;

    // edit menu
    QMenu *editMenu;
    QToolBar *editToolBar;
#ifndef QT_NO_CLIPBOARD
    QAction *cutAct;
    QAction *copyAct;
    QAction *pasteAct;
#endif
    // connection menu
    QMenu *connectionMenu;
    QAction *uartConfigAct;

    // tool menu
    QMenu *toolMenu;
    QAction *testAct;
    QAction *curveTestAct;
    QAction *fftTestAct;
    QAction *sigSlotTestAct;
    QAction *uartAct;
    QAction *curveAct;

    QAction *hplcCommonAct;
    QAction *hplcDebugInfoAct;
    QAction *hplcPumpAct;
    QAction *hplcPumpPanelAct;
    QAction *hplcTimeProgramAct;

    QAction *hplcAutoSamplerAct;
    QAction *hplcAutoSamplerDeviceAct;

    QAction *electronicScaleWeightCurveAct;
    QAction *electronicScaleIntervalRateCurveAct;

    // windowk menu
    QMenu *windowMenu;
    QAction *closeAct;
    QAction *closeAllAct;
    QAction *tileAct;
    QAction *cascadeAct;
    QAction *nextAct;
    QAction *previousAct;
    QAction *windowMenuSeparatorAct;

    // help menu
    QMenu *helpMenu;
    QAction *updateAct;
    QAction *serialPortUpdaterAct;
    QAction *aboutAct;
};
#endif // MAINWINDOW_P_H
